package com.study.authority;

public class TestThisSuper {
    public static void main(String[] args) {
        J j = new J();
    }
}
class H{
    H(){
        System.out.println("调用H的构造器");
    }
}
class J extends H{
    String name;
    int age;
    double weight;
    //构造方法是在堆中创建对象，只调用一次，且只创建一个对象
    //如果在一个构造方法中，使用多个this(param...) 调用多次其他的构造方法，就会创建多个对象
    //所以每个构造方法中this(param...)只能调用一次

    //可以在一个构造器中调用另一个构造器 J() -> J(String name) -> J(int age) -> J(double weight)
    // 在J(double weight)中开始创建J对象 创建J对象的前提是创建父类H对象。this.weight = weight;上一行隐式调用H类中的无参构造器
    J(){
        this("tom");
        //this("jerry");
    }
    J(String name){
        this(1);
        this.name = name;
        System.out.println(this.name);
    }
    J(int age){
        this(43.543);
        this.age = age;
        System.out.println(this.age);
    }
    J(double weight){
        //在此处调用父类的构造方法
        this.weight = weight;
        System.out.println(this.weight);
    }
}